home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
10
/
9
/
DISK1095.ZIP
/
PAYROLL.PRG
< prev
next >
Wrap
Text File
|
1980-01-01
|
8KB
|
228 lines
*
* PAYROLL
* PREPARE PAYROLL TRANSACTIONS WITH OPERATOR INPUT OF WITHHOLDING AMOUNT
SET HEADING OFF
SET SAFETY OFF
SET STATUS OFF
CLEAR
CLEAR ALL
SET TALK OFF
SET BELL OFF
STORE SPACE(80) TO BLANK
@ 1,22 SAY "SMITH'S BIKEWORKS INFORMATION SYSTEM"
@ 3,12 SAY ">> Human Resources Management System Payroll Processing <<"
@ 5,29 SAY "Today's Date: "
?? DATE()
STORE "PERSONNL" TO FILENAME
STORE "PSSAN " TO INDEX
STORE " " TO REF
* SOCIAL SECURITY RATE PAID BY EMPLOYEE. ALTER IF RATE CHANGES
STORE 6.70 TO SS_WKRATE
* MAXIMUM EARNINGS ON WHICH SOCIAL SECURITY IS PAID
STORE 34200.00 TO SS_MAX
* SOCIAL SECURITY RATE PAID BY EMPLOYER. ALTER IF RATE CHANGES
STORE 6.70 TO SS_EMRATE
* UNEMPLOYMENT INSURANCE (EMPLOYERS LIABILITY) RATE. ALTER IF RATE CHANGES
* RATES ARE FEDERAL EXCESS OVER STATE RATE, AND THE STATE RATE
STORE .70 TO UI_FED
STORE 2.70 TO UI_STATE
* MAXIMUM EARNINGS ON WHICH UNEMPLOYMENT TAX IS COLLECTED
STORE 6000.00 TO UI_MAX
@ 7,1 SAY "Run Payroll From The FILE " GET FILENAME
@ 7,50 SAY "INDEX " GET INDEX
@ 9,1 SAY "Payables Will be Output to PAYFILE"
@ 11,1 SAY "Social Security -- Employee Rate " GET SS_WKRATE
@ 11,50 SAY "Employer Rate " GET SS_EMRATE
@ 13,1 SAY "Maximum Earnings on Which Social Security is Paid " GET SS_MAX
@ 15,1 SAY "Unemployment Ins -- Fed Rate " GET UI_FED
@ 15,45 SAY "State Rate " GET UI_STATE
@ 17,1 SAY "Max Earnings for Unemployment Insurance " GET UI_MAX
STORE " " TO DUMMY
@ 21,1 SAY ;
"REPLACE VALUES AT CURSOR, OR JUST PRESS ENTER IF CURRENT PAYROLL DESCRIPTION"
@ 22,1 SAY ;
"IS O.K. 'M' HERE RETURNS TO MENU, ANY OTHER KEY STARTS PAYROLL INPUT =>";
GET DUMMY
READ
STORE UPPER(DUMMY) TO DUMMY
IF DUMMY="M"
RETURN
ENDIF
* CONVERT PERCENTAGES TO DECIMAL FRACTIONS
STORE SS_WKRATE*.01 TO SS_WKRATE
STORE SS_EMRATE*.01 TO SS_EMRATE
STORE UI_FED*.01 TO UI_FED
STORE UI_STATE*.01 TO UI_STATE
* OPEN FILE USING INDEX SPECIFIED ABOVE, OR NO INDEX IF IT IS BLANK
IF INDEX=" "
USE &FILENAME
ELSE
USE &FILENAME INDEX &INDEX
ENDIF
* OUTPUT PAYROLL AMOUNTS AS ACCOUNTS PAYABLE TO PAYFILE, INDEXED ON ACCT_NUM
SELECT B
USE PAYFILE INDEX PFACTNO
* PRESENT RECORDS FOR WHICH HIRED VARIABLE IS TRUE, AND REC NOT DELETED
SELECT A
GO TOP
STORE " " TO ACTION
DO WHILE ACTION<>"M"
IF HIRED.AND..NOT.DELETE()
* CLEAR DISPLAY
STORE 7 TO COUNT
DO WHILE COUNT<24
@ COUNT,0 SAY BLANK
STORE COUNT+1 TO COUNT
ENDDO
DO WHILE ACTION<>"R".AND.ACTION<>"M".AND.ACTION<>"S"
STORE " " TO ACTION
STORE 0.00 TO REG_HOURS
STORE 0.00 TO OVT_HOURS
STORE 0.00 TO REG_PAY
STORE 0.00 TO OVT_PAY
STORE 0.00 TO GROSS_PAY
STORE 0.00 TO WTH_FEDTAX
STORE 0.00 TO WKR_SSAN
STORE 0.00 TO EMP_SSAN
STORE 0.00 TO EMP_UIFED
STORE 0.00 TO EMP_UIST
STORE 0.00 TO YTDGP_TMP
STORE 0.00 TO YTDWTH_TMP
STORE 0.00 TO YTDSS_TMP
@ 7,1 SAY "Employee -- Name :"
?? TRIM(A->LAST_NAME)+","+TRIM(A->FIRST_NAME)+" "+A->INITIAL
@ 7,60 SAY "SSAN :"
?? A->SSAN
@ 9,1 SAY "Hourly ? :"
?? A->HOURLY
@ 9,20 SAY "Rate/Salary :"
?? A->PAY_RATE
@ 9,45 SAY "Overtime Factor :"
?? A->OVER_TIME
@ 11,1 SAY "Hours Worked (Hourly) -- Regular " GET REG_HOURS
@ 11,55 SAY "Overtime " GET OVT_HOURS
* INPUT TIME CARD DATA FOR HOURLY EMPLOYEES, FIXED CALCS FOR SALARIED
IF A->HOURLY
READ
STORE REG_HOURS*A->PAY_RATE TO REG_PAY
STORE OVT_HOURS*A->PAY_RATE*A->OVER_TIME TO OVT_PAY
ELSE
CLEAR GETS
STORE A->PAY_RATE TO REG_PAY
ENDIF
STORE REG_PAY+OVT_PAY TO GROSS_PAY
@ 13,1 SAY "Pay -- Regular $"
?? STR(REG_PAY+.005,8,2)
@ 13,35 SAY "Overtime $"
?? STR(OVT_PAY+.005,8,2)
@ 13,61 SAY "Gross $"
?? STR(GROSS_PAY+.005,8,2)
@ 15,1 SAY "Input Withholding Amount For"
?? A->EXEMP,"Exemptions", A->MAR_STATUS,"Marital Status "
@ 15,65 GET WTH_FEDTAX
READ
* STORE YEAR TO DATE GROSS PAY TEMPORARILY
STORE YTD_PAY+GROSS_PAY TO YTDGP_TMP
* COMPUTE SOCIAL SECURITY WITHHOLDING
IF YTD_PAY-GROSS_PAY<SS_MAX
IF YTD_PAY<SS_MAX
STORE SS_WKRATE*GROSS_PAY TO WKR_SSAN
STORE SS_EMRATE*GROSS_PAY TO EMP_SSAN
ELSE
STORE SS_WKRATE*(GROSS_PAY-SS_MAX) TO WKR_SSAN
STORE SS_EMRATE*(GROSS_PAY-SS_MAX) TO EMP_SSAN
ENDIF
ENDIF
* STORE WITHHOLDING AND SOCIAL SECURITY TEMPORARILY
STORE YTD_WTHHLD+WTH_FEDTAX TO YTDWTH_TMP
STORE YTD_FICA+WKR_SSAN TO YTDSS_TMP
* COMPUTE EMPLOYER'S CONTRIBUTION TO UNEMPLOYMENT INSURANCE
IF YTD_PAY-GROSS_PAY<UI_MAX
IF YTD_PAY<UI_MAX
STORE UI_FED*GROSS_PAY TO EMP_UIFED
STORE UI_STATE*GROSS_PAY TO EMP_UIST
ELSE
STORE UI_FED*(GROSS_PAY-UI_MAX) TO EMP_UIFED
STORE UI_STATE*(GROSS_PAY-UI_MAX) TO EMP_UIST
ENDIF
ENDIF
STORE GROSS_PAY-WTH_FEDTAX-WKR_SSAN TO NET_PAY
@ 17,0 SAY " "
?? "Social Security -- Employee $",STR(WKR_SSAN+.005,8,2),;
" Employer $",STR(EMP_SSAN+.005,8,2)
? " Net Pay $",STR(NET_PAY+.005,8,2)," Fed. Unempl. Ins. $",;
STR(EMP_UIFED+.005,8,2)," State $",STR(EMP_UIST+.005,8,2)
@ 20,0 SAY " "
?? "YTD --Pay $",STR(YTDGP_TMP+.005,8,2)," Withholding $",;
STR(YTDWTH_TMP+.005,8,2)," FICA $",STR(YTDSS_TMP+.005,8,2)
@ 22,1 SAY "PRESS 'R' TO RECORD PAYROLL DATA, 'M' TO RETURN TO MENU"
@ 23,1 SAY "'S' TO SKIP. ANY OTHER KEY ALLOWS RE-ENTRY OF ALL DATA => ";
GET ACTION
READ
STORE UPPER(ACTION) TO ACTION
ENDDO
* IF ACTION IS 'R' GENERATE ACCOUNTING TRANSACTIONS
IF ACTION='M'
LOOP
ENDIF
IF ACTION='R'
* STORE YTD VALUES IN EMPLOYEE RECORD
REPLACE YTD_PAY WITH YTDGP_TMP
REPLACE YTD_WTHHLD WITH YTDWTH_TMP
REPLACE YTD_FICA WITH YTDSS_TMP
* GENERATE TRANSACTIONS FOR PAYABLES FILE
* PAYCHECK FIRST. INCLUDES AMOUNTS FOR EACH PAY CATEGORY
SELECT B
APPEND BLANK
REPLACE ACCT_NUM WITH 31.00, DATE_RECD WITH DATE(), DATE_DUE ;
WITH DATE(), AMOUNT WITH NET_PAY
REPLACE PAYEE WITH A->SSAN+" "+TRIM(A->LAST_NAME)+","+TRIM(A->FIRST_NAME);
+" "+A->INITIAL
* STORE ALL PAY AMOUNTS SO ACCOUNTING SYSTEM COULD OUTPUT THEM
REPLACE REFERENCE WITH STR(REG_PAY,8,2)+STR(OVT_PAY,8,2)+;
STR(GROSS_PAY,8,2)+STR(WTH_FEDTAX,8,2)+STR(WKR_SSAN,8,2)+;
STR(NET_PAY,8,2)+STR(YTDGP_TMP,8,2)+STR(YTDWTH_TMP,8,2)+;
STR(YTDSS_TMP,8,2)
* WITHHOLDING TAX TRANSACTION
APPEND BLANK
REPLACE ACCT_NUM WITH 52.00, DATE_RECD WITH DATE(), DATE_DUE ;
WITH DATE(), AMOUNT WITH WTH_FEDTAX
REPLACE PAYEE WITH "INTERNAL REVENUE SERVICE"
REPLACE REFERENCE WITH A->SSAN+" Withholding "+DTOC(DATE())
* SOCIAL SECURITY -- EMPLOYEE
APPEND BLANK
REPLACE ACCT_NUM WITH 23.10, DATE_RECD WITH DATE(), DATE_DUE;
WITH DATE(), AMOUNT WITH WKR_SSAN
REPLACE PAYEE WITH "INTERNAL REVENUE SERVICE"
REPLACE REFERENCE WITH A->SSAN+" Employee FICA "+DTOC(DATE())
* SOCIAL SECURITY -- EMPLOYER
APPEND BLANK
REPLACE ACCT_NUM WITH 23.00, DATE_RECD WITH DATE(), DATE_DUE;
WITH DATE(), AMOUNT WITH EMP_SSAN
REPLACE REFERENCE WITH A->SSAN+" Employer FICA "+DTOC(DATE())
* UNEMPLOYMENT INSURANCE -- FEDERAL
APPEND BLANK
REPLACE ACCT_NUM WITH 24.10, DATE_RECD WITH DATE(), DATE_DUE;
WITH DATE(), AMOUNT WITH EMP_UIFED
REPLACE REFERENCE WITH A->SSAN+" Unempl. Ins. Fed "+DTOC(DATE())
* UNEMPLOYMENT INSURANCE -- STATE
APPEND BLANK
REPLACE ACCT_NUM WITH 24.00, DATE_RECD WITH DATE(), DATE_DUE;
WITH DATE(), AMOUNT WITH EMP_UIST
REPLACE REFERENCE WITH A->SSAN+" Unempl. Ins. State "+DTOC(DATE())
SELECT A
ENDIF 'R'
ENDIF 'HIRED'
* NEXT RECORD
STORE RECNO() TO RECNOW
SKIP 1
* IF RECORD NUMBER DOESN'T CHANGE, THIS IS THE END OF FILE
IF EOF()
STORE "M" TO ACTION
ELSE
STORE " " TO ACTION
ENDIF
ENDDO
CLEAR
RETURN